Peripheral Component Interconnect Express (PCIe) is a high-speed serial computer expansion bus standard that is used to communicate between a host processing system and an expansion device. These expansion devices may comprise networking devices, storage devices, graphics processing devices, among other possible devices. To provide the communications, packets are transferred to and from the host processing system to provide the desired functionality. For example, when data is requested from a PCIe storage device, one or more packets are transferred to the host computing system over the PCIe lanes to the host processing system.
In some implementations, multiple host processing systems may be coupled to a single PCIe device using a PCIe switch or fabric controller. In this configuration, each of the host systems may require data reads and data writes with the PCIe device, which can limit the data throughput that is provided to each of the systems. Consequently, if one host system is using a larger amount of resources than other host systems coupled to the PCIe device, the other host systems may not receive an adequate quality of service.
Overview
Examples disclosed herein provide enhancements for managing quality of service for data interactions between host systems and a Peripheral Component Interconnect Express (PCIe) device. In one implementation, a computing system includes a plurality of host systems coupled to a PCIe device via a PCIe switch, wherein each of the plurality of host systems are configured to maintain quality of service statistics for data interactions between the host system and the PCIe device. Each host system is further configured to provide the quality of service statistics to the PCIe switch for forwarding to the other host systems, and receive second quality of service statistics from the other host systems. Once the second quality of service statistics are received, each of the host systems is further configured to determine a maximum queue depth for data interactions with the PCIe device based on the locally maintained quality of service statistics and the second received quality of service statistics to maintain at least a minimum quality of service for the plurality of host systems.